#include <stdio.h>
#include <stdlib.h>

typedef struct size
{
    int a;
    int b;
    char c;
}size;

int main(int argc, char const *argv[])
{
    // int a = 10;//a是栈上的数据
    // int* b = (int*)malloc(sizeof(int));//b是分配的堆的数据
    // // b = &a;//这时候b指向了a
    // free(b);//在b指向a的时候,因为a是栈上的数据,所以无法将其释放


    size a;
    printf("a的字节数为:%ld\n",sizeof(a));
    /*gcc编译器默认按四字节解释,所以在不使用#pragma pack(n)改动的情况下,
    sizeof(a)的结果为12,其中的char不足四字节,系统默认后面有三个空的字节,
    也就是补到默认的四字节如果char上下还有一个足四字节的类型,sizeof(a)的
    结果还是12,因为这两个不足四字节的组合在一起,不满四字节的系统默认补成四字节
    可使用#pragma pack(n)来改写默认的字节检索,例如:
    #pragma pack(1),那么现在的sizeof(a)的结果是9*/


    return 0;
}
